@哈哈鱼
1年前 提问
1个回答

绕过 CSRF 防御的方法有哪些

安全小白成长记
1年前

绕过 CSRF 防御的方法有以下这些:

  • 增加Token验证:对关键操作增加Token参数,token必须随机,每次都不一样;

  • 关于安全的会话管理,避免会话被利用:不要在客户端保存敏感信息,比如身份验证信息。退出、关闭浏览器时的会话过期机制,设置会话过机制,比如15分钟无操作,则自动登录超时;

  • 访问控制安全管理:敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码。建议敏感信息的修改使用POST,而不是GET,建议通过HTTP头部中的REFERER来限制原页面;

  • 增加验证码:一般在登录主要防暴力破解,也可以用在其他重要信息操作的表单中,但是需要考虑可用性;

  • 验证HTTP Referer字段:HTTP头中的Referer字段记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,而如果黑客要对其实施CSRF攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF攻击。

  • 在HTTP头中自定义属性并验证:这种方法也是使用token并进行验证,这里并不是把token以参数的形式置于HTTP请求中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。通过XMLHttpRequest请求的地址不会被记录到浏览器的地址栏,也不用担心token会透过Referer泄露到其他网站中去。